Python এর মাধ্যমে Socket Programming এর প্রাথমিক ধারণা

Computer Programming - ইউনিক্স সকেট (Unix Socket) Socket Programming in Python (Python এ Socket Programming) |
212
212

Python এর মাধ্যমে Socket Programming এর প্রাথমিক ধারণা

সকেট প্রোগ্রামিং হল একটি নেটওয়ার্ক প্রোগ্রামিং কৌশল যা বিভিন্ন প্রোগ্রাম বা প্রসেসের মধ্যে যোগাযোগ তৈরি করতে ব্যবহৃত হয়। Python এ সকেট প্রোগ্রামিং এর মাধ্যমে দুটি বা তার বেশি সিস্টেমের মধ্যে ডেটা ট্রান্সফার করা সম্ভব। এটি ক্লায়েন্ট-সার্ভার মডেল অনুসরণ করে, যেখানে একটি প্রোগ্রাম (সার্ভার) অন্য একটি প্রোগ্রাম (ক্লায়েন্ট) এর সাথে যোগাযোগ স্থাপন করে।

Python-এ সকেট প্রোগ্রামিংয়ের জন্য socket নামক বিল্ট-ইন লাইব্রেরি ব্যবহৃত হয়, যা সকেট তৈরি, সংযোগ স্থাপন, ডেটা পাঠানো, গ্রহণ করা ইত্যাদি কাজ পরিচালনা করতে সাহায্য করে।


১. Socket Programming-এর মূল ধারণা

  • সকেট: এটি একটি সফটওয়্যার উপাদান যা দুটি প্রক্রিয়ার মধ্যে যোগাযোগ প্রতিষ্ঠা করে। এটি সাধারণত TCP/IP বা UDP প্রোটোকল ব্যবহার করে যোগাযোগ তৈরি করে।
  • ক্লায়েন্ট-সার্ভার মডেল: একে একে একটি ক্লায়েন্ট সার্ভারে সংযোগ স্থাপন করে, এবং সার্ভারটি ক্লায়েন্টের অনুরোধ প্রক্রিয়া করে এবং সাড়া দেয়।

২. Python-এ Socket Programming শুরু করা

Python-এ সকেট প্রোগ্রামিং শুরু করার জন্য আপনাকে socket লাইব্রেরিটি ইমপোর্ট করতে হবে। নিচে Python দিয়ে TCP সকেট সার্ভার এবং ক্লায়েন্ট তৈরি করার উদাহরণ দেওয়া হয়েছে।


৩. TCP সার্ভার তৈরি করা

একটি TCP সার্ভার ক্লায়েন্টের সাথে সংযোগ স্থাপন করে এবং ক্লায়েন্টের পাঠানো বার্তা গ্রহণ করে সাড়া দেয়।

import socket

# সার্ভারের হোস্ট নাম এবং পোর্ট নম্বর
host = '127.0.0.1'
port = 65432

# সকেট তৈরি করা
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# সকেটটি সুনির্দিষ্ট হোস্ট এবং পোর্টে বেঁধে দেওয়া
server_socket.bind((host, port))

# সকেটটি ক্লায়েন্ট সংযোগের জন্য শুনছে
server_socket.listen()

print("Server listening on", host, ":", port)

# ক্লায়েন্টের সাথে সংযোগ স্থাপন
client_socket, client_address = server_socket.accept()
print(f"Connection established with {client_address}")

# ক্লায়েন্ট থেকে বার্তা গ্রহণ করা
data = client_socket.recv(1024)
print("Received message:", data.decode())

# সার্ভার থেকে ক্লায়েন্টকে সাড়া পাঠানো
client_socket.sendall(b"Hello, Client!")

# সংযোগ বন্ধ করা
client_socket.close()

কোডের ব্যাখ্যা:

  • সার্ভার সকেট তৈরি করে bind() ফাংশন দিয়ে একটি নির্দিষ্ট হোস্ট এবং পোর্ট নম্বর সেট করে।
  • listen() ফাংশনটি সার্ভারকে ক্লায়েন্টের সংযোগের জন্য প্রস্তুত করে।
  • accept() ফাংশনটি ক্লায়েন্টের সাথে সংযোগ গ্রহণ করে এবং একটি ক্লায়েন্ট সকেট তৈরি করে।
  • recv() ফাংশন ক্লায়েন্ট থেকে ডেটা গ্রহণ করে এবং sendall() ফাংশন ক্লায়েন্টে সাড়া পাঠায়।

৪. TCP ক্লায়েন্ট তৈরি করা

এখন, TCP ক্লায়েন্ট তৈরি করা হবে, যা সার্ভারের সাথে সংযোগ স্থাপন করবে এবং সার্ভারকে একটি বার্তা পাঠাবে।

import socket

# সার্ভারের হোস্ট নাম এবং পোর্ট নম্বর
host = '127.0.0.1'
port = 65432

# ক্লায়েন্ট সকেট তৈরি করা
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# সার্ভারের সাথে সংযোগ স্থাপন
client_socket.connect((host, port))

# সার্ভারকে বার্তা পাঠানো
message = "Hello, Server!"
client_socket.sendall(message.encode())

# সার্ভার থেকে সাড়া গ্রহণ করা
data = client_socket.recv(1024)
print("Received from server:", data.decode())

# সংযোগ বন্ধ করা
client_socket.close()

কোডের ব্যাখ্যা:

  • ক্লায়েন্ট সকেট তৈরি করে connect() ফাংশন দিয়ে সার্ভারের সাথে সংযোগ স্থাপন করা হয়।
  • sendall() ফাংশন ব্যবহার করে ক্লায়েন্ট একটি বার্তা সার্ভারে পাঠায়।
  • recv() ফাংশন ব্যবহার করে সার্ভার থেকে সাড়া গ্রহণ করা হয়।

৫. UDP সকেট প্রোগ্রামিং

UDP (User Datagram Protocol) প্রোটোকলটি একটি কানেকশনলেস প্রোটোকল, যা কম দেরিতে ডেটা প্রেরণ করতে সাহায্য করে। UDP সিস্টেমে সংযোগের প্রয়োজন হয় না, তবে এটি ডেটার গ্যারান্টি দেয় না (যেমন, ডেটা হারানো হতে পারে)।

UDP সার্ভার উদাহরণ:

import socket

# সার্ভারের হোস্ট নাম এবং পোর্ট নম্বর
host = '127.0.0.1'
port = 65432

# UDP সকেট তৈরি করা
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# সার্ভারের হোস্ট এবং পোর্টে বেঁধে দেওয়া
server_socket.bind((host, port))

print("UDP Server is listening...")

# ডেটা গ্রহণ করা
data, client_address = server_socket.recvfrom(1024)
print(f"Received message: {data.decode()} from {client_address}")

# সাড়া পাঠানো
server_socket.sendto(b"Hello, Client!", client_address)

UDP ক্লায়েন্ট উদাহরণ:

import socket

# সার্ভারের হোস্ট নাম এবং পোর্ট নম্বর
host = '127.0.0.1'
port = 65432

# UDP সকেট তৈরি করা
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# সার্ভারে বার্তা পাঠানো
message = "Hello, Server!"
client_socket.sendto(message.encode(), (host, port))

# সার্ভার থেকে সাড়া গ্রহণ করা
data, server_address = client_socket.recvfrom(1024)
print("Received from server:", data.decode())

# সংযোগ বন্ধ করা
client_socket.close()

৬. Socket Programming এর নিরাপত্তা

যেহেতু সকেট প্রোগ্রামিংয়ের মাধ্যমে নেটওয়ার্কের মাধ্যমে ডেটা পাঠানো হয়, সুতরাং নিরাপত্তা অত্যন্ত গুরুত্বপূর্ণ। কিছু নিরাপত্তা কৌশল হল:

  • এনক্রিপশন (Encryption): SSL/TLS ব্যবহার করে সকেট সংযোগ এনক্রিপ্ট করা, যাতে ডেটা নিরাপদ থাকে।
  • অথেনটিকেশন (Authentication): ক্লায়েন্ট এবং সার্ভারের মধ্যে সঠিক অথেনটিকেশন ব্যবস্থা প্রয়োগ করা, যাতে অবৈধ অ্যাক্সেস রোধ করা যায়।
  • ফায়ারওয়াল এবং সুরক্ষা প্রোটোকল: নেটওয়ার্কে সুরক্ষা নিশ্চিত করতে ফায়ারওয়াল এবং অন্যান্য সুরক্ষা ব্যবস্থা ব্যবহার করা।

উপসংহার

Python এর মাধ্যমে সকেট প্রোগ্রামিং খুবই শক্তিশালী একটি কৌশল যা আপনি সার্ভার এবং ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করতে ব্যবহার করতে পারেন। TCP এবং UDP প্রোটোকল ব্যবহার করে আপনি যোগাযোগ স্থাপন করতে পারবেন এবং ডেটা আদান-প্রদান করতে পারবেন। সঠিকভাবে প্রোগ্রামিং এবং নিরাপত্তা কৌশল ব্যবহার করে এই প্রোগ্রামগুলির কার্যকারিতা এবং সুরক্ষা নিশ্চিত করা সম্ভব।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion